package com.jy.modules.cims.component.credit.credit;

import com.jy.modules.cims.data.common.dto.TCMmCostPlanDTO;
import com.jy.modules.cims.data.common.dto.TCMmCreditSettleParamDTO;
import com.jy.modules.cims.data.dto.credit.CreditFeeDto;
import com.jy.modules.cims.data.dto.credit.CreditFeeParamDto;

/**
 * @description 债权费用计算组件
 * @author shengzhoutao
 * @date 2015-08-11
 */
public interface ICreditFee {
	/**
	 * @description 正常结算债权各项费用
	 * @param creditFeeParamDto
	 *            债权费用计算参数对象<br/>
	 *            债权转让编号：transferId；合约编号：contractCode；当前期次：currentTime，
	 *            以上 三个字段的值为必输入项。
	 * @return CreditFeeDto 债权费用对象，计算后的各项费用信息。
	 * @author shengzhoutao
	 * @date 2015-08-11
	 */
	public CreditFeeDto getNormalSettleInfo(CreditFeeParamDto creditFeeParamDto);

	/**
	 * @description 异常结算债权各项费用
	 * @param creditFeeParamDto
	 *            债权费用计算参数对象<br/>
	 *            债权转让编号：transferId；合约编号:contractCode；当前期次:currentTime，
	 *            结算状态：settleStatus（01-提前还款）， 以上 四个字段的值为必输入项。
	 * @return CreditFeeDto 债权费用对象，计算后的各项费用信息。
	 * @author shengzhoutao
	 * @date 2015-08-11
	 */
	public CreditFeeDto getAbnormalSettleInfo(CreditFeeParamDto creditFeeParamDto);
	
	/**
     * @description 根据债权结算参数和结算计划，计算计算费用
     * @param tCMmCreditSettleParamDTO
     *            债权结算参数
     * @param tCMmCostPlanDTO
     *            结算计划
     * @return 债权费用对象
     */
    public CreditFeeDto getSettleInfo(final TCMmCreditSettleParamDTO tCMmCreditSettleParamDTO, final TCMmCostPlanDTO tCMmCostPlanDTO) ;

}
